(function($) {
	/**
	 * 提交数据
	 * send API 调用说明： 
	 * 1、$("#formId").send(String action);
	 * 	  提交表单到action方法,缺省对表单进行校验，缺省不处理action返回结果
	 * 2、$("#formId").send(String action,Boolean isValidate);
	 *    提交表单到action方法名,根据isValidate决定是否校验表单,缺省不处理action返回结果
	 * 3、$("#formId").send(String action,Function callback);
	 * 	  提交表单到action方法名,根据callback处理action返回结果，缺省校验表单
	 * 4、$("#formId").send(String action,Boolean isValidate,Function callback);
	 *    提交表单到action方法名,根据isValidate决定是否校验表单,根据callback处理action返回结果
	 */
	$.fn.send = function(action, arg1, arg2) {
		// 缺省空回调函数
		var callback = function() {
		};
		var isValidate = true; // 缺省进行校验
		for ( var i = 1; i < arguments.length; i++) {
			if (typeof arguments[i] == "boolean") {
				isValidate = arguments[i];
			} else {
				callback = arguments[i];
			}
		}

		if (isValidate) {
			if (!this.check()) {
				return;
			}
		}

		var data = this.values();
		Newtouch.Ajax.sendParams(data, action, function(result) {
			if (result && result["_value"] != undefined) {
				callback(result["_value"]);
			} else {
				callback(result);
			}
		}, function(error){
			callback(false,error);
		});
	};

	/**
	 * 获取表单值
	 */
	$.fn.values = function() {
		var formParams = {};
		var params = $(this).formToArray();

		for ( var i = 0; i < params.length; i++) {
			if(formParams[params[i].name]){
				formParams[params[i].name] += ","+params[i].value;
			}else{
				formParams[params[i].name] = params[i].value;
			}
		}
		return formParams;
	};

	/**
	 * 清理表单
	 */
	$.fn.clear = function() {
		this.clearForm();
		//去除form中的校验信息
		$("input,select,textarea",$(this)).removeClass("error");
		$("label",$(this)).remove(".error");
	};

	/**
	 * 重置表单
	 */
	$.fn.reset = function() {
		this.resetForm();
		//去除form中的校验信息
		$("input,select,textarea",$(this)).removeClass("error");
		$("label",$(this)).remove(".error");
	};
	
	/**
	 * 校验表单
	 */
	$.fn.check = function() {
		return $(this).validate().form();
	};
	
	/**
	 * 提交数据
	 * send API 调用说明： 
	 * 1、$("#formId").send2str(String action);
	 * 	  提交表单到action方法,缺省对表单进行校验，缺省不处理action返回结果
	 * 2、$("#formId").send2str(String action,Boolean isValidate);
	 *    提交表单到action方法名,根据isValidate决定是否校验表单,缺省不处理action返回结果
	 * 3、$("#formId").send2str(String action,Function callback);
	 * 	  提交表单到action方法名,根据callback处理action返回结果，缺省校验表单
	 * 4、$("#formId").send2str(String action,Boolean isValidate,Function callback);
	 *    提交表单到action方法名,根据isValidate决定是否校验表单,根据callback处理action返回结果
	 */
	$.fn.send2str= function(action, arg1, arg2) {
		// 缺省空回调函数
		var callback = function() {
		};
		var isValidate = true; // 缺省进行校验
		for ( var i = 1; i < arguments.length; i++) {
			if (typeof arguments[i] == "boolean") {
				isValidate = arguments[i];
			} else {
				callback = arguments[i];
			}
		}

		if (isValidate) {
			if (!this.check()) {
				return;
			}
		}

		var dataString={datastr:""};
		var formParams = $(this).formToArray();	
		for ( var i = 0; i < formParams.length; i++) {
			if(formParams[i].name && formParams[i].value!=""){	
				dataString.datastr += formParams[i].name + "=" + formParams[i].value + ",";
			}
		}
		Newtouch.Ajax.sendParams(dataString, action, function(result) {
			if (result && result["_value"] != undefined) {
				callback(result["_value"]);
			} else {
				callback(result);
			}
		}, function(error){
			callback(false,error);
		});
	};
})(jQuery);

$(document).ready(function() {
	$("form").each(function() {
		$(this).validate();
	});
	
	//绑定datepicker控件
	$("input.date-picker").datepicker ({
		yearRange:"-100:+100",
		duration:'fast',
		constrainInput:true,
		dateFormat:'yy-mm-dd',
		defaultDate:'null',
		changeMonth:true,
		showButtonPanel:true,
		changeYear:true
	});

	//绑定datetime-picker控件
	$("input.datetime-picker").datetimepicker({
		yearRange:"-100:+100",
		duration:'fast',
		constrainInput:true,
		dateFormat:'yy-mm-dd h:i:s',
		defaultDate:'null',
		changeMonth:true,
		showButtonPanel:true,
		changeYear:true
	});
});